查看原文
其他

抛弃bash,拥抱zsh!

Jackpop 平凡而诗意 2022-08-19
 

点击蓝字关注我

 
shell是我们使用Linux过程中经常接触到的工具,也是用户与Linux系统之间的桥梁。目前有很多shell工具,例如,bash、sh等。这些能够满足我们日常工作的大多数常见,但是在效率和易用性方面却捉襟见肘,本文就介绍两款bash的有力竞争者--zshfish

—▼—

前言

在使用Linux和unix过程中,大部分时间都在和命令行打交道。编辑文件、配置环境、切换目录、版本控制等等,都是在命令行下完成。因此,一个好的shell工具是至关重要的,它直接关乎着我们在开发过程中的使用体验和效率。

> cat /etc/shells
/bin/sh
/bin/bash
......

可以查看一下查看一下Linux系统默认自带的有shbash等shell工具,它们都已经足够强大,支持丰富的语法和函数定义,能够覆盖我们常见的操作,但是,bash算得上一款中规中矩的shell工具,没有什么缺陷,但是也谈不上优秀,在很多方面考虑的还不够周到,例如,自动补全、语法、高亮显示、提示符等。
为了能够让它提升我们开发过程中的效率和便捷性,需要进行各种各样的配置,例如,在使用git版本控制时,我需要知道当前处于哪个分支?内容是否有修改?默认的提示符是无法显示的,我们就需要配置bash使得它能够满足我们的需求,这对于不熟悉Linux或者懒得去配置的同学显然是不够友好的。
得益于强大的开源社区,一些大牛在原来bash的基础上开发了一些优秀的bash替代者,例如,elvish、ksh93、nushell、osh,它们能够有效的解决了在使用shell过程中的弊端和不足之处,提升了开发过程中的体验。当然,这些替代者也各有侧重点,给人的体验也存在差异,本文我就介绍2款我个人使用过,且认为相对较好的shell工具。

oh-my-zsh

102kStar、250+插件、125+主题、1450+贡献者……从这一系列的数字中就可以体现出这款shell工具的生态有多么完善,也足以体现它有多么强大。

就像它的口号那样,“Your terminal never felt this good before.”,的确,当使用这款命令行工具之后,我就开始一发不可收拾,一直使用到现在。

这里需要说明的是,oh-my-zsh和zsh并不是等价的。zsh(z shell)是一款可用作交互式登录的shell脚本编写命令解释器Zsh对Bourne shell做出了大量改进,同时加入了Bashkshtcsh的某些功能。而oh-my-zsh是一款开源、社区驱动的zsh管理、配置工具。目前macos及部分Linux已经预装zsh,所以这里主要介绍它的管理工具oh-my-zsh,如果没有你所使用的系统没有安装zsh,可以通过下方命令安装,

# Ubuntu
> sudo apt-get install zsh
# RedHat
> sudo yum install zsh

当安装oh-my-zsh之后,就可以轻松体验到强大的插件和精美的主题,能够瞬间让你的终端能够焕发生机。

如果使用oh-my-zsh仅仅是让它看上去美观了,我认为这显然是没有必要去使用的,至少对于我来说是这样的,我不会因为某款工具好看而去经过一系列配置。

通过安装配置,oh-my-zsh能够有效的提高生产力,就如同前言里提到的那样,有一些优质的主题能够清晰的展示开发过程中所需要的信息,让我们对当前项目所处状态一目了然,能够避免很多不必要的操作和失误,例如,我个人在使用的主题bira,它就能够展现当前所处目录、分支、修改状态,对于团队开发非常有效。

说了这么多,下面就介绍一下怎么配置和使用。

安装配置

可以通过两种方式安装配置oh-my-zsh,分别是curl和wget。

curl

> sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"

wget

> sh -c "$(wget https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh -O -)"

安装之后用户根目录下会出现一个~/.zshrc的配置文件,在这里可以配置zsh的启动脚本和主题,默认的启动脚本路径为,

~/.oh-my-zsh/oh-my-zsh.sh

按照之后在命令行下输入zsh即可进入。

配置主题

在配置文件里还可以配置主题,这也是我经常用到的,可以找到ZSH_THEME字段修改后面的主题名称进行修改,

ZSH_THEME="bira"

关于主题,可以查看下方链接,然后选择自己喜欢的主题,

https://github.com/ohmyzsh/ohmyzsh/wiki/Themes

我个人比较推荐3款主题,一个是前面提到的bira,另一个就是ys

也可以选择agnoster

配置插件

我们也可以在~/.zshrc中配置插件,找到plugins字段,在后面括号中添加插件的名称即可,例如,

plugins=(rails git ruby)

有一些插件自带,有一些需要按照,zshrc支持插件列表和对应插件的介绍可以查看下面网页,

https://github.com/ohmyzsh/ohmyzsh/wiki/Plugins

fish

在使用zsh之前,我用过很长一段时间fish作为主要的shell工具。就像fish的名字(the friendly interactive shell)一样,它也是一款非常友好、强大的命令行工具。

我之所以被on-my-zsh吸引,是因为它能够很容易配置丰富的主题和插件。虽然目前已经从fish切换到zsh,但是不得不说,fish也有很多让人称赞且依赖的优点,下面就来介绍一下它的优点。

自动建议和自动补全

像我们使用浏览器浏览网页一样,fish会根据历史记录和补全建议命令。当我们输入一部分命令时,它后面会显示命令的剩余部分,用灰色显示,然后我们可以用或者ctrl+F采纳当前建议,也可以使用alt+→采用当前一部分建议。除此之外,还可以使用tab键显示所有的候选项。

VGA色彩显示

fish支持24位彩色显示,这在当前终端技术中属于比较先进的,而且,它能够利用不同颜色来指示当前输入的内容是否正确。

如果当前输入的不正确或者不完整,那么它会显示红色,如果输入完整且正确,则会显示蓝色

脚本语法简单

使用bash过程中,最令人反感的就是它晦涩的脚本语法。当希望写一个自动化shell脚本时,它的语法和我们常见的编程语言相去甚远,而fish支持的脚本语法非常简单,和我们所见的很多脚本语言类似,例如,查看当前目录下Python文件(以py结尾)并输出,

bash语法

for line in *.py
do
    echo $line 
done

fish语法

for line in *.py
    echo $line
end

从上面简单示例的对比就可以很明显的看出,fish的脚本语法更加简单且一致。

友好的帮助文档

其他shell都需要预先经过配置才能完成帮助文档的自动补全,但只有fish通过解析已安装的手册页自动生成它们。另外,fish有更加强大的帮助文档阅读方式,在命令行输入help命令就尅在web浏览器打开帮助手册,然后可以针对性的查看自己需要的内容。

实用的默认配置

这也是我认为fish相对于zsh的最大优势,它不需要开发者进行过多的配置,它已经进行了很多友好的默认配置,因此,可以说是开箱即用。

安装配置

前面介绍了fish的优势,下面就介绍一下如何安装配置。

Ubuntu下安装fish,

> sudo apt-get install fish

Mac下安装fish,

> brew install fish

安装之后输入fish即可。

fish配置可以通过两种方式,

  • web浏览器

  • config.fish

我推荐使用web浏览器进行配置,在命令行下输入fish_config命令就会在浏览器打开一个配置页,可以配置颜色、函数,也可以查看历史命令等,非常直观。

结语

zsh和fish都是shell工具中的佼佼者,二者各有优势,每个人可以根据自己的偏重和需求进行选择。如果喜欢开箱即用,我建议可以尝试fish。如果喜欢个性化,喜欢自己折腾配置,可以使用zsh,可以根据自己的需求配置各种不同的插件、主题。

END

 


有趣的灵魂在等你

长按扫码可关注 

往期精彩回顾




迫不及待把这款开发神器推荐给大家!


【进阶Python】第十讲:可变对象与拷贝


Python参数配置库ConfigParser详解


Github上那些简单且值得推荐的Python小工具

PyHubWeekly | 第二期:GitHub上优质的Python项目



文章好看就点这里

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存